package com.helin.helinhealth.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;

/**
 * 数据导出任务实体类
 * 
 * <p>
 * 该实体类对应数据库中的 export_task 表，用于存储用户的数据导出任务信息，
 * 包括导出类型、状态、文件路径等。支持多种类型的数据导出，如健康记录、用药记录等。
 * </p>
 */
@Data
@TableName("export_task")
@Schema(description = "导出任务表")
public class ExportTask {
    /**
     * 任务ID，自增主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @Schema(description = "任务ID")
    private Long id;
    
    /**
     * 用户ID，关联user表的openid
     */
    @TableField("user_id")
    @Schema(description = "用户ID")
    private String userId;
    
    /**
     * 导出类型(1-健康记录, 2-用药记录, 3-紧急呼叫记录)
     */
    @TableField("type")
    @Schema(description = "导出类型")
    private Integer type;
    
    /**
     * 开始日期
     */
    @TableField("start_date")
    @Schema(description = "开始日期")
    private LocalDateTime startDate;
    
    /**
     * 结束日期
     */
    @TableField("end_date")
    @Schema(description = "结束日期")
    private LocalDateTime endDate;
    
    /**
     * 导出文件路径
     */
    @TableField("file_path")
    @Schema(description = "导出文件路径")
    private String filePath;
    
    /**
     * 显示用的文件名，更通俗易懂
     */
    @TableField("file_name")
    @Schema(description = "显示文件名")
    private String fileName;
    
    /**
     * 导出格式(1-Excel, 2-PDF, 3-CSV)
     */
    @TableField("format")
    @Schema(description = "导出格式")
    private Integer format;
    
    /**
     * 任务状态(0-处理中, 1-已完成, 2-失败)
     */
    @TableField("status")
    @Schema(description = "任务状态")
    private Integer status;
    
    /**
     * 创建时间
     */
    @TableField("create_time")
    @Schema(description = "创建时间")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField("update_time")
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;
    
    /**
     * 逻辑删除标记：0-未删除 1-已删除
     */
    @TableField("is_deleted")
    @TableLogic
    @Schema(description = "逻辑删除标记")
    private Integer isDeleted;
    
    /**
     * 任务参数（JSON格式）
     */
    @TableField("params")
    @Schema(description = "任务参数")
    private String params;
    
    /**
     * 错误信息
     */
    @TableField("error_msg")
    @Schema(description = "错误信息")
    private String errorMsg;
    
    /**
     * 完成时间
     */
    @TableField("finish_time")
    @Schema(description = "完成时间")
    private LocalDateTime finishTime;
} 